"""
类型提示（Type Hinting）是一种可选的语法，它允许你在代码中指定变量、函数参数和返回值的预期数据类型。
类型提示不会影响程序的实际运行，因为 Python 仍然是一个动态类型语言。然而，它们可以帮助开发者更好地理解代码，
并且可以被静态类型检查工具如 mypy 使用来发现潜在的类型错误。
- 类型提示可以提高代码的清晰度，并帮助静态分析工具进行更准确的类型检查，不过很少有人使用，大概是懒吧
"""
# 1. 变量
age: int = 25
name: str = "Alice"


# 2. 函数
def greet(name: str) -> str:
    return f"Hello, {name}!"


# 3. 复杂类型
from typing import List, Dict, Tuple


def process_items(items: List[str]) -> None:
    for item in items:
        print(item)


def get_coordinates() -> Tuple[int, int]:
    return (10, 20)


def create_user() -> Dict[str, str]:
    return {"username": "admin", "password": "secret"}


# 4. 泛型
from typing import List, TypeVar

T = TypeVar('T')


def first(l: List[T]) -> T:
    return l[0]


# 5. 类方法
from typing import ClassVar


class User:
    count: ClassVar[int] = 0  # 类变量

    def __init__(self, username: str, email: str) -> None:
        self.username: str = username
        self.email: str = email
        User.count += 1

    def send_email(self, message: str) -> None:
        print(f"Sending email to {self.email}: {message}")
